package com.xbai.condition;

import com.xbai.bean.RainBow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author xbai
 * @Date 2021/3/30
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    /**
     * @param importingClassMetadata 当前类的注解信息
     * @param registry BeanDefinition 注册类；把所有需要添加到容器中的 bean，调用 BeanDefinitionRegistry.registerBeanDefinition 手工注册进来
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        boolean definition = registry.containsBeanDefinition("com.xbai.bean.Red");
        boolean definition1 = registry.containsBeanDefinition("com.xbai.bean.Blue");
        if (definition && definition1) {
            // 指定 Bean 定义信息；（Bean 的类型， Bean。。。）
            RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(RainBow.class);
            // 注册一个 Bean，指定 Bean 的名称
            registry.registerBeanDefinition("rainBow", rootBeanDefinition);
        }
    }
}
